﻿//***********************************************************************
// Assembly         : IGolovkine.AoA.Core
// Author           : Ilia
// Created          : 06-11-2011
//
// Last Modified By : Ilia
// Last Modified On : 06-11-2011
// Description      : 
//
// Copyright        : (c) Microsoft. All rights reserved.
//***********************************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace IGolovkine.AoA.BinarySerialization
{
    /// <summary>
    /// 
    /// </summary>
    /// <remarks></remarks>
    public interface ISlimBinaryWriter
    {
        /// <summary>
        /// Writes the int32.
        /// </summary>
        /// <param name="value">The value.</param>
        /// <remarks></remarks>
        void WriteInt32(Int32 value);
        /// <summary>
        /// Writes the string.
        /// </summary>
        /// <param name="value">The value.</param>
        /// <remarks></remarks>
        void WriteString(string value);
        /// <summary>
        /// Writes the byte array.
        /// </summary>
        /// <param name="array">The array.</param>
        /// <remarks></remarks>
        void WriteByteArray(byte[] array);
        /// <summary>
        /// Writes the object.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="obj">The obj.</param>
        /// <remarks></remarks>
        void WriteObject<T>(T obj) where T : ISlimBinarySerializable;
        /// <summary>
        /// Writes the object array.
        /// </summary>
        /// <param name="array">The array.</param>
        /// <remarks></remarks>
        void WriteObjectArray(ISlimBinarySerializable[] array);
    }
}
